/* Note: This example was broken up to version 2.1 of muimaster.doc */ LONG mSet(struct IClass *cl,Object *obj,sruct opSet *msg) { struct Data *data = INST_DATA(cl,obj); struct TagItem *tags,*tag; for (tags=msg->ops_AttrList;tag=NextTagItem(&tags);) { switch (tag->ti_Tag) { case MYATTR_PEN_1: data->pen1 = tag->ti_Data; /* set the new value */ data->mark = 1; /* set internal marker*/ MUI_Redraw(obj,MADF_DRAWUPDATE); /* update ourselves */ break; case MYATTR_PEN_1: data->pen2 = tag->ti_Data; /* set the new value */ data->mark = 2; /* set internal marker*/ MUI_Redraw(obj,MADF_DRAWUPDATE); /* update ourselves */ break; } } return(DoSuperMethodA(cl,obj,msg)); } LONG mDraw(struct IClass *cl,Object *obj,struct MUIP_Draw *msg) { struct Data *data = INST_DATA(cl,obj); // ** Note: You *must* call the super method prior to do // ** anything else, otherwise msg->flags will not be set // ** properly !!! DoSuperMethodA(cl,obj,msg); // ALWAYS REQUIRED! if (msg->flags & MADF_DRAWUPDATE) { /* called as a result of our MUI_Redraw() during MUIM_Set method. Depending on our internal marker, we render different things. */ switch (data->mark) { case 1: RenderChangesFromPen1(cl,obj); break; case 2: RenderChangesFromPen2(cl,obj); break; } } else if (msg->flags & MADF_DRAWOBJECT) { /* complete redraw, maybe the window was just opened. */ DrawObjectCompletely(cl,obj); } /* if MADF_DRAWOBJECT wasn't set, MUI just wanted to update the frame or some other part of our object. In this case we just do nothing. */ return(0); }